package com.energy.analysis.comm.base;

import java.util.List;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.stereotype.Service;

import com.energy.analysis.comm.page.Page;

@Service
public abstract class BaseService<T extends BaseEntity> {

	protected Logger logger = LoggerFactory.getLogger(BaseService.class);

	/**
	 * 需要被子类覆盖
	 * 
	 * @return
	 */
	protected abstract BaseMapper<T> getMapper();

	/**
	 * 添加对象
	 * 
	 * @param entity
	 */
	public Integer insert(T entity) {
		return getMapper().insert(entity);
	}

	/**
	 * 根据主键删除对象
	 * 
	 * @param id
	 */
	public int delete(String id) {
		return getMapper().delete(id);
	}

	/**
	 * 修改对象
	 * 
	 * @param entity
	 */
	public Integer update(T entity) {
		return getMapper().update(entity);
	}

	/**
	 * 根据主键Id获取对象
	 * 
	 * @param id
	 * @return
	 */
	public T getById(Integer id) {
		return (T) getMapper().getById(id);
	}

	/**
	 * 根据主键Id获取对象
	 * 
	 * @param id
	 * @return
	 */
	public T getById(String id) {
		return (T) getMapper().getById(id);
	}
	
	 
	/**
	 * 返回所有记录
	 * 
	 * @return
	 */
	public List<T> getAll(Page<T> page) {
		List<T> list = getMapper().getAll(page);
		page.setRows(list);
		return list;
	}
	
	public List<T> getAll(){
		return getMapper().getAll();
	}
	/**
	 * 返回所有记录
	 * 
	 * @return
	 */
	public int getAllCount(Page<T> page) {
		int rows = getMapper().getAllCount(page);
		page.setTotal(rows);
		return rows;
	}
 
	/**
	 * 清空缓存 
	* @Title: reLoad 
	* @Description: TODO(这里用一句话描述这个方法的作用) 
	* @param     设定文件 
	* @return void    返回类型 
	* @throws
	 */
	@CacheEvict(value="sys_cache",key="#id")   
	public void clearEhcache(String id){
		logger.debug("清空缓存:" + id);
	}
}
